草庐IT

C++ std::shared_ptr 用法和信息

全部标签

c++ - 我应该使用 std::system 来编写单元测试的脚本部分吗?

我的情况是我有一个C++工具的单元测试,其中部分测试需要实际运行一个测试命令行工具(这将触发一些我可以在测试后检查的东西-工具已结束)。我认为我使用的C++单元测试框架非常无关紧要,我的问题与system("test_tool.exe...")的合法使用有关——它会seem那systemisn't在C++开发人员的顶级工具列表中(恕我直言,通常如此)。那么,是否已知system已成功用于单元测试?在UT环境中使用它执行知名工具时,我是否会遇到任何问题? 最佳答案 对我来说,这是可以接受的system用法-但您需要注意“如何检查tes

c# - EnsureChildControls() 的正确用法是什么?

当我访问依赖于子控件的复合控件的属性时,我最常使用它。但我还将它添加到控件的OnInit中,这样我就可以确保正确添加了隐藏字段。就在一分钟前,我在RenderControl中调用了它,因为我在渲染日历扩展器时遇到问题,它已修复。我开始对何时需要、何时不需要调用EnsureChildControls以及何时应该调用它感到有点困惑。欢迎任何指点。谢谢! 最佳答案 EnsureChildControls会触发CreateChildControl(如果之前未触发)。这必须在页面生命周期中只完成一次。我在OnInit/Page_Init中无条

c# - ArgumentException 的正确用法?

据我所知,ArgumentExceptions通常是这样使用的:publicvoidUpdateUser(Useruser){if(user==null)thrownewArgumentException("user");//etc...}但是如果我有这样的东西怎么办:publicvoidUpdateUser(intidOfUser){varuser=GetUserById(idOfUser);if(user==null)thrownewArgumentException("idOfUser");//etc...}那还是ArgumentException吗?

c# - 无法从高阶函数的用法中推断出类型参数

我有以下高阶函数:publicstaticFuncNot(FuncotherFunc){returnarg=>!otherFunc(arg);}并尝试这样调用它:varisValidStr=LinqUtils.Not(string.IsNullOrWhiteSpace);编译器给我“无法从用法中推断出类型参数”错误。但以下工作:varisValidStr=LinqUtils.Not((strings)=>string.IsNullOrWhiteSpace(s));我想知道有什么区别?string.IsNullOrWhiteSpace已经是具有完全相同签名的非重载函数。如评论中所述,以下

c# - 如何使用 C# 查找类或方法的用法?

在VisualStudio中,我可以右键单击类或方法并选择“查找用法”。这为我提供了我的解决方案中使用该段代码的位置列表。如何从我的代码中执行相同的操作? 最佳答案 您需要解析您的代码才能执行此操作。我不认为你可以通过反射(reflection)来做到这一点。MS一直致力于一个名为Roslyn的项目。这是一种用于.NET编译器的API。它应该为您提供所需的东西。查看this发布有关Roslyn项目的详细信息。引自帖子:ThisopensupnewopportunitiesforVSextenderstowritepowerfulre

c# - Visual Studio : How to manage code shared between projects

这可能以前发布过,但我不确定要查找哪些搜索词!快速解释。我有几个项目之间共享的代码。此代码本身仍在进行中。问题是每当我需要更新此代码时,我不想重复3次,这将成为一场噩梦。有没有办法将它添加到项目中,而无需将其复制到项目文件夹中?即我希望共享类作为链接到我的3个项目中C:\coderepository\sharedclass.cs不是\eachproject\bin\sharedclass.cs我是否必须将其创建为自己的库项目?如果编译器可以将其编译为“外部”代码,那就更好了。干杯。 最佳答案 正如其他人所说,您只需在解决方案资源管理

c# - ConcurrentQueue<StrongBox<T>> 的用法

我基本上是在寻找一个线程中从相机获取的图像集合的容器。由于ConcurrentQueue是线程安全的,所以我想使用它。但是在调试我的代码时,我发现了thisarticle说Iftheelementsaresmall,you’llprobablynevernoticethis.If,however,theelementsholdontolargeresources(e.g.eachelementisahugeimagebitmap),it’spossibleyoucouldseetheimpactofthis(oneworkaroundistoqueueawrapperobject,e.

C# MEF 与静态类的用法

我的解决方案中有一个静态类,用于处理各种程序集。我想通过MEF链接它们,所以我在类中创建了一个字段。[Import(typeof(A))]staticprivateA_a1;然后我有一个方法,我将程序集名称作为参数传递给该方法:publicstaticALoadPackage(stringfilePath){varcatalog=newAggregateCatalog();catalog.Catalogs.Add(newAssemblyCatalog(filePath));var_container=newCompositionContainer(catalog);???}那么现在有没

无法从具有多个返回的 Select 中的用法推断出 C# 类型参数

我不认为我在做任何太深奥的事情,但我没有看到任何其他关于此的问题。以下代码(我已将其简化为基本要素)在C#4中生成编译器错误。但是,类型参数是什么应该是显而易见的-最大公分母(“A类”)也是在方法“Frob”的返回类型中明确定义。编译器不应该列出lambda表达式中的所有返回类型,创建一个祖先树来找到它们的共同祖先,然后将其与包含方法的预期返回类型进行协调吗?Thetypeargumentsformethod'System.Linq.Enumerable.Select(System.Collections.Generic.IEnumerable,System.Func)'cannotb

c# - 如何在尝试删除文件时调试 "Sharing Violation"

我有一个多线程C#应用程序,它创建文件,打开它们进行处理,然后在完成后删除它们。此应用程序可以预期处理1-100个文件。有点随机(很可能归因于应用程序的多线程性质)当我尝试在处理后删除文件时遇到共享冲突。我的直觉告诉我,维克,你在尝试删除文件之前没有正确关闭/处置文件。如果每个文件都发生这种情况,我会凭直觉去做,但事实并非如此。所以,我试图找出我在哪里犯了错误。外面有人对如何调试此类异常有任何指示吗?如果有意义的话,我很乐意在文件上看到堆栈跟踪。我将尝试展示伪代码,但是,我的问题更多是关于如何调试此类异常:申请事件:操作开始+=创建新处理器。传输文件+=Processor.Proces